package common;

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 * Interfaccia dedicata al protocollo RMI. Definisce i metodi che la classe comunicante col server, tramite RMI, deve implementare per un funzionamento corretto del protocollo.
 */
public interface ClientInterface_RMI extends Remote{

	/**
	 * Metodo chiamato dal server. Viene chiamato il metodo cambioTurno del client che controllera' se e' il proprio turno o meno.
	 * @param username Stringa indicante il nome dell'utente di cui e' il turno.
	 * @throws RemoteException Eccezione lanciata in caso siano stati riscontrati errori con la connessione.
	 */
	public void cambioTurno(String username) throws RemoteException;
	
	/**
	 * Metodo invocato dal server per informare gli utenti che al giocatore corrispondente al parametro username gli si e' estinta la razza.
	 * @param username Stringa indicante il nome dell'utente a cui si e' estinta la razza.
	 * @throws RemoteException Eccezione lanciata in caso siano stati riscontrati errori con la connessione.
	 */
	public void specieMorta(String username) throws RemoteException;
	
	/**
	 * Metodo utilizzato dal server per verificare l'esistenza del singolo client. Il metodo torna infatti true se la connessione e' stabile.
	 * @return Ritorno true, per cominucare al server che la connessione funziona correttamente.
	 * @throws RemoteException Eccezione lanciata in caso siano stati riscontrati errori con la connessione.
	 */
	public boolean exist() throws RemoteException;
}
